Messages are often transmitted through packet-switched networks using the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols. TCP/IP determines the path bandwidth for message transmission by a sender device using a trial-and-error approach. The rate at which the sender device sends messages is increased until packet loss occurs. TCP/IP detects packet loss by noting that an acknowledgement was not received for a sent message. Packet loss often results from events such as buffer overflows that occur at intermediate or endpoint devices. Upon detecting packet loss, TCP/IP decreases the transmission rate and transmits messages at a gradually increasing rate until packet-loss is again detected. While this approach may work well for the transmission of a large number of messages between a device pair, it is not efficient for transmitting a small message or small number of messages because the messages may all be transmitted before TCP/IP has an opportunity to detect packet loss. If the initial rate used was too high, all of the messages sent may need to be retransmitted.
In addition to retransmission, packet loss may also result in a temporary halt of message transmission from a sender device. When TCP/IP detects a certain number of packet losses in a time period, the network is assumed to be congested and TCP/IP increases the delay between the transmission of messages from the sender device that is experiencing the packet loss. Such a delay can be far more costly to overall performance than retransmission. A sender device with ample bandwidth allowing parallel transmission of many small messages to many receivers may be at particular risk of having transmission halted when using TCP/IP.
The use of full bisection bandwidth networks can alleviate congestion in the core, but packet loss may still occur at end-stations. If TCP uses loss as a congestion signal, unnecessary retransmission delays can still occur.
Another approach for message transmission is to establish a circuit between two devices across the network. Circuits typically involve bandwidth allocation for a communication channel between the devices at the devices themselves and at each intermediate device. Because of the high cost of setting up and tearing down circuits, however, the short messages that typify many network applications cannot justify the cost of circuit set-up.